package com.novel.common.init;

import com.novel.common.pojo.RedisParamKey;
import com.novel.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * 会话监听器
 * 1.用户session过期之后redis依然保存了数据
 * 在这个清空redis中的数据
 * <p>
 * 2.统计在线人数
 * session的创建+1，session的销毁-1
 */
@WebListener
public class SessionListener implements HttpSessionListener {

    @Autowired
    private RedisUtils redisUtils;

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        redisUtils.incrSum(RedisParamKey.onlineCount);
    }

    /**
     * session销毁时携带删除redis中保存的数据
     * 把在线人数-1
     */
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        redisUtils.incrSum(RedisParamKey.onlineCount, -1L);
        redisUtils.deleteByKey(se.getSession().getId());
    }
}